//
// Created by wujehy on 2020/8/3.
//

#ifndef AUTH_RAFT_CONTEXTBASE_H
#define AUTH_RAFT_CONTEXTBASE_H

/**
 * @brief 上下文 基类
 */
class ContextBase
{

public:
    /**
     * @brief 上下文 存储的类型
     */
    enum Type
    {
        Type_Task = 1,
        Type_Test_one = 2,
    };
    /**
     * @brief 上下文 查找匹配模式
     */
    enum MatchType
    {
        NO_Match_TYPE = 0, ///< 查找的时候 匹配 不需要进行类型判断
        Match_TYPE = 1,  ///<  查找的时候 匹配 需要进行类型判断
    };

    /**
     * @brief 当前 上下文内容的 查找匹配模式
     * @return
     */
    virtual MatchType match()
    {
        return Match_TYPE;
    }

    /**
     * @brief 上下文的 类型
     * @return 返回 被实现的上下文模块的类型
     */
    virtual int type() = 0;

    /**
     * @brief 上下恩 析钩器
     */
    virtual ~ContextBase()
    {
    }

    /**
     * @brief 初始化完成统一 触发器
     */
    virtual void init_finished() = 0;
};

#endif //AUTH_RAFT_CONTEXTBASE_H
